﻿using System;
using DataLayer.Types;
using NHibernate;
using NHibernate.Criterion;

namespace DataLayer.Queries
{
    public class EntityByNameQuery
    {
//        public string Name { get; set; }
//
//
//        public ICriteria GetQuery(ISession session)
//        {
//            var crit = DetachedCriteria.For(typeof (BaseRecord<>))
//                .Add(Restrictions.)
//
//        }

//        public DateTime? DueDate { get; set; }
//        public decimal? MinAmount { get; set; }
//        public decimal MaxAmount { get; set; }

//        public ICriteria GetQuery(ISession session)
//        {
//            var crit = DetachedCriteria.For(typeof(Payment))
//                // actual late paying query logic
//            .Add(Restrictions.Eq("IsLate", true))
//            .SetProjection(Projections.Property("Customer.Id"));
//
//            if (DueDate != null)
//                crit.Add(Restrictions.Ge("DueDate", DueDate.ValuePerYear));
//
//            if (MinAmount != null)
//                crit.Add(Restrictions.Ge("Amount", MinAmount.ValuePerYear));
//
//            if (MaxAmount != null)
//                crit.Add(Restrictions.Ge("Amount", MaxAmount.ValuePerYear));
//
//
//            return session.CreateCriteria(typeof(Customer))
//            .Add(Subqueries.PropertyIn("Id", crit));
//        }
    }
}
